iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0
Security

資安菜鳥的30天挑戰系列 第 9

[DAY9]在你角落放個小強!

  • 分享至 

  • xImage
  •  

XSS

📌 在你的留言板或表單偷偷放了惡意程式碼

當其他人瀏覽網頁時,這段程式碼會在他們的瀏覽器執行

攻擊者可能偷 cookie、竄改網頁、發送假訊息

攻擊方

  • 偵察漏洞:找網站輸入欄位、留言板、評論欄或 URL,測試是否能執行 <script>
  • 輸入惡意程式碼
    • 反射型 XSS:在網址或表單輸入惡意 JS,立即被回傳執行
    • 儲存型 XSS:將 JS 存進資料庫,其他使用者瀏覽時執行
    • DOM 型 XSS:修改瀏覽器端 DOM 或 URL hash 觸發 JS
  • 取得目標:竊取 cookie、session,或竄改頁面發送釣魚訊息
  • 隱蔽行動:避免網站安全機制偵測,如編碼 payload、分段攻擊

防禦方

  • 輸入驗證:禁止或過濾特殊符號,如 <>"'
  • 輸出編碼:將使用者輸入的字元轉成 HTML 或 JS 安全格式
  • 框架防護:使用 React、Angular 等框架自動處理編碼
  • Content Security Policy (CSP):限制網頁執行來源與外部 script
  • HTTPOnly Cookie:防止 JS 竊取 cookie
  • 定期檢查與測試:滲透測試或掃描工具檢測 XSS 漏洞

反射型(Reflected XSS)

📌使用者的輸入直接被網站回傳時,沒有存到資料庫

使用者點擊網址

http://test.com/search?q=<script>alert('123')</script>

網站立即回傳輸入並執行 alert

攻擊者可以透過 URL 釣魚或騙使用者點擊

儲存型(Stored XSS)

📌將惡意程式碼存到網站資料庫,所有瀏覽該內容的人都會被觸發

攻擊者在留言板中輸入

<script>alert('123')</script>

其他使用者打開該留言或文章時

瀏覽器就會自動執行 alert 或更複雜的 JS

DOM 型(DOM-based XSS)

📌發生在瀏覽器端,利用前端 JavaScript 操作 DOM 或讀取 URL/hash

document.write(location.hash)

使用者訪問

http://test.com/page#<script>alert('123')</script>

瀏覽器會把 hash 內容當作程式碼執行

攻擊者能控制頁面內容

結論

攻擊者

可以利用反射型、儲存型或 DOM 型 XSS

  • 瀏覽器執行任意程式碼
  • 竊取 cookie、session
  • 篡改網頁內容進行釣魚攻擊

防禦方

  • 輸入驗證
  • 輸出編碼
  • Content Security Policy
  • HTTPOnly cookie

📌 我反射你的反射!!


上一篇
[DAY8]偷偷在書裡面塞張紙!
下一篇
[DAY10]是誰在亂說話?
系列文
資安菜鳥的30天挑戰23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言